Method of soft-decision decoding of reed-solomon codes

ABSTRACT

The invention relates to a Reed-Solomon decoder and to a method of soft-decision decoding of Reed-Solomon codes, wherein a syndrome polynomial, an erasure polynomial and a modified syndrome polynomial are computed the-flyin parallel by iteratively updating coefficients of these polynomials.

FIELD OF THE INVENTION

The present invention pertains generally to error detection/correction and more particularly to systems and methods used in Reed-Solomon decoders.

BACKGROUND AND PRIOR ART

A commonly used error correcting technique is the Reed-Solomon error correcting code. For an overview and for applications of Reed-Solomon codes reference is made to “Reed-Solomon Codes and Their Applications”, Stephen B. Wicker, Vijay R. Bhargava, IEEE Press, 1994 and “Digital Communications, Fundamentals and Applications”, Second Edition, Bernard Sklar, Prentice Hall PTR, 2001.

U.S. Pat. No. 5,517,509 shows a Reed-Solomon decoder in the form of a Euclid's algorithm operation circuit in which division polynomials are repeatedly divided by residues resulting from the division process of dividend polynomials and division polynomials until the degree of residues of the division process satisfies a prescribed condition.

The Euclid's algorithm operation circuit comprises register groups for storing dividend polynomials and division polynomials, respectively, a feedback loop for storing residues resulting from the division process of the dividend polynomials by the division polynomials, a shifter for shifting contents of registers, and an exchanger for exchanging coefficients of the dividend polynomials with coefficients of the division polynomials.

The decoder comprises a syndrome operator for calculating syndromes from received code-words, an erasure locator generator for generating erasure locator data from erasure locator flags synchronous with received code-words, a modified syndrome generator for generating modified syndromes, an erasure locator polynomial generator for generating erasure locator polynomials from the erasure locator data, a Euclid's algorithm operation circuit for obtaining error locator polynomials and error value polynomials, a Chien searcher for obtaining error locations and error values and a correction processor for correcting errors of the received code-word. The modified syndrome generator and the erasure locator polynomial generator are used jointly with the Euclid's algorithm operation circuit.

Other approaches for implementing a Reed-Solomon decoder are know from U.S. Pat. Nos. 5,991,911, 6,032,283, 6,304,994 B1, 5,537,426 and EP 0 821 493 A1 and EP 0 942 421 A1.

Usually the computation of the modified syndrome polynomial is performed by computation of the product of the syndrome and erasure polynomials. This computation requires additional cycles and computation time to obtain the modified syndrome polynomial.

It is therefore an object of the present invention to provide for a method of soft-decision decoding of Reed-Solomon codes where the calculation of the modified syndrome polynomial does not require additional cycles.

SUMMARY OF THE INVENTION

The object of the invention is solved basically by applying the features laid down in the independent claims. Preferred embodiments of the invention are given in the dependent claims.

The present invention enables to minimize the computation time for soft-decision decoding of Reed-Solomon codes by parallel on-the-fly computation of the syndrome and erasure polynomials as well as the modified syndrome polynomial. In other words, the invention enables to perform the calculation of the modified syndrome polynomial before the computation of the syndrome and erasure polynomials has been completed.

The present invention is particularly advantageous in that it enables to compute the modified syndrome polynomials on-the-fly with the incoming symbols. Therefore a separate computation step usually referred to as polynomial expansion can be omitted.

It is a further advantage that after correction a direct update of the modified syndromes can be performed without computation of the product of the syndrome and erasure polynomials. This results in a reduction of the overall computation time and hardware requirements.

The general idea of the invention is to reduce the number of cycles needed to compute the modified syndrome. To obtain the modified syndrome polynomial a multiplication of the erasure and syndrome polynomial has to be done. The complexity of the conventional serial algorithm for that is c=r(l+1)−l(l+1)/2, where r is the number of parity symbols in a RS code word and l is the number of erasures in a code word.

The complexity of the conventional serial-parallel algorithm is c=l+1.

The general idea of the invention is to compute the modified syndrome on-the-fly. Therefore the present method does not need any additional cycles for computation of the modified syndrome, which saves computation power and time.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 shows a block diagram of a hardware implementation of a known on-the-fly syndrome computation,

FIG. 2 shows a block diagram of a hardware implementation of a known on-the-fly computation of the erasure polynomial,

FIG. 3 is illustrative of a flowchart of an embodiment for on-the-fly computation of the modified syndrome polynomial,

FIG. 4 is a block diagram of a hardware implementation for on-the-fly computation of the modified syndrome polynomials,

FIG. 5 is a timing diagram, which is related to the flowchart of FIG. 3,

FIG. 6 is illustrative of an alternative method for on-the-fly computation of the modified syndrome polynomials,

FIG. 7 is a block diagram of a hardware implementation of the method of FIG. 6,

FIG. 8 is a timing diagram relating to the method of FIG. 6.

DETAILED DESCRIPTION

In soft-decision decoding it is known that a receiver can correct as long as 2e+f<d _(min).  (1) where e is the number of errors, f is the number of erasures, and d_(min) is the Hamming distance.

For Computing the errors the following steps have to be done:

-   -   1. Compute the syndrome polynomial $\begin{matrix}         {{S(x)} = {{\sum\limits_{i = 0}^{N - 1}v_{i}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}x}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{2i}x^{2}}} + \ldots + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{{({M - 1})}i}x^{M - 1}}}}} & (2)         \end{matrix}$     -   2. Compute the erasure polynomial, where α^(j) ^(i) is the power         of the positions j₀, j₁, . . . , j_(p−1) of the erasures         $\begin{matrix}         {{\Gamma(x)} = {\prod\limits_{i = 0}^{p - 1}\left( {1 - {\alpha^{j_{i}}x}} \right)}} & (3)         \end{matrix}$     -   3. Construct the modified syndrome polynomial by         T(x)=Γ(x)S(x)modx ^(M)  (4)     -   4. Solve the key equation         Λ(x)T(x)=Ω(x)modx ^(M)  (5)     -   with Berlekamp-Massey or Euclid's algorithm.     -   5. Compute the Forney polynomial         Ψ(x)=Λ(x)Γ(x)  (6)     -   6. Compute the magnitude of the errors and erasures using the         Forney equation.

As apparent from Equations (2) and (3), they can be computed on-the-fly with the incoming data symbols v_(N−1), . . . v₁, v₀.

In the following a more detailed explanation of an implementation of above step 1, i.e. Equation (2), is given.

Let the error vector be {right arrow over (e)}=[e₀, e₁, . . . , e_(N−1)] with polynomial representation e(x)=e ₀ +e ₁ x+ . . . +e _(N−1) x ^(N−1) with e _(i) εGF(2⁸).  (7)

The received polynomial at the input of the decoder is then v(x)=c(x)+e(x)=v ₀ +v ₁ x+ . . . +v _(N−1) x ^(N−1) with v _(i) εGF(2⁸),  (8) where the polynomial coefficients are components of the received vector {right arrow over (v)}. Since the code word polynomial c(x) is divisible by the generator polynomial g(x), and g(=α^(i))=0 for i=0,1, . . . , M−1, evaluating the polynomial v(x) at the roots of the generator polynomial, which are α⁰, α¹, . . . α^(M−1) yields to $\begin{matrix} \begin{matrix} {{v\left( \alpha^{j} \right)} = {{c\left( \alpha^{j} \right)} + {e\left( \alpha^{j} \right)}}} \\ {= {e\left( \alpha^{j} \right)}} \\ {{= {\sum\limits_{i = 0}^{N - 1}{e_{i}\alpha^{ij}}}},{j = 0},1,\ldots\quad,{M - 1.}} \end{matrix} & (9) \end{matrix}$

That signifies that the final equation set involves only components of the error pattern not those of the code word. They are called as syndromes S_(j), j=0,1, . . . , M−1, where $\begin{matrix} {{S_{j} = {{v\left( \alpha^{j} \right)} = {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{ij}}}}},{j = 0},1,\ldots\quad,{M - 1.}} & (10) \end{matrix}$

These syndromes are used to form a syndrome polynomial in the form $\begin{matrix} \begin{matrix} {{S(x)} = {{\sum\limits_{i = 0}^{N - 1}v_{i}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}x}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{2i}x^{2}}} + \ldots +}} \\ {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{{({M - 1})}i}x^{M - 1}}} \\ {= {S_{0} + {S_{1}x} + {S_{2}x^{2}} + \ldots + {S_{M - 1}{x^{M - 1}.}}}} \end{matrix} & (11) \end{matrix}$

An on-the-fly computation of Equation (11) can be achieved is by iteratively updating the coefficients S_(i), i=0, 1, . . . , M−1. At each symbol clock j, a new symbol v_(n) is arriving, the power α_(n) of the position n is computed and the coefficients are updated in the following way: S _(i,j) =S _(i,j−1) +v _(n)α^(in) , i=0, 1, . . . , M−1 where S_(i,−1)=0.  (12)

A hardware implementation of an on-the-fly syndrome computation is shown in FIG. 1. At the beginning of a new code sequence, register 1 is initialised with the power of the position of the first symbol. The registers 2 are initialised with zero. Each time a new symbol arrives, register 1 and registers 2 are clocked, the syndromes are updated according to Equation (12) and the power of the root term in register 1 is decreased by one.

In the following a more detailed explanation of above step 2, i.e. Equation (3), is given.

Assuming p erasures at positions j₀, j₁, . . . , j_(p−1), the erasure polynomial is computed in the following manner $\begin{matrix} \begin{matrix} {{\Gamma(x)} = {\prod\limits_{i = 0}^{p - 1}\left( {1 - {\alpha^{j_{i}}x}} \right)}} \\ {= {\Gamma_{0} + {\Gamma_{1}x} + {\Gamma_{2}x^{2}} + \ldots + {\Gamma_{p}x^{p}}}} \end{matrix} & (13) \end{matrix}$

An on-the-fly computation of that equation can be achieved by iteratively updating the polynomial. Each time j, when a new erasure v_(n) occurs, the power α^(n) of the erasure position n is computed and the polynomial is updated in the following way Γ_(j)(x)=Γ_(j−1)(x)·(1−α^(n) x)=(Γ_(0,j−1)+Γ_(1,j−1) x+ . . . +Γ _(p,j−1) x ^(p))(1−α^(n) x)  (14)

Examining the final polynomial of Equation (14), the coefficients can be written as $\begin{matrix} {\Gamma_{i,j} = \left\{ {\begin{matrix} {{\Gamma_{i,{j - 1}} + {\alpha^{n}\Gamma_{{i - 1},{j - 1}}}},} & {{i = 1},2,\ldots\quad,p} \\ {1,} & {i = 0} \end{matrix},{{{where}\quad\Gamma_{i,{- 1}}} = 0.}} \right.} & (15) \end{matrix}$

A hardware implementation of an on-the-fly erasure polynomial computation, achieved by Equation (15) is depicted in FIG. 2. If the incoming symbol is an erasure, the depicted switches are toggled and the circuit realizes the computation according Equation (15).

The switches remain in their depicted position if the symbol is not an erasure. The switches are realized as combinatorial logic; hence they do not cause any extra clock delay. They are directly connected to the erasure signal provided with the symbol information. At the beginning of a new code sequence register 1 is initialised with the power of the position of the first symbol, for example with α¹⁸¹ for the inner code of DVD.

The registers 2 are initialised with zero. Each time, when a new symbol arrives, register 1 and registers 2 are clocked, the syndromes are then updated according to Equation (15) and the power of the root term in register 1 is decreased by one.

The modified syndrome polynomial is obtained by multiplying the syndrome polynomial of Equation (2) with the erasure polynomial of Equation (3), according to $\begin{matrix} \begin{matrix} {{T(x)} = {{S(x)}{\Gamma(x)}{mod}\quad x^{M}}} \\ {= \left( {S_{0} + {S_{1}x} + {S_{2}x^{2}} + \ldots + {S_{M - 1}x^{M - 1}}} \right)} \\ {\left( {\Gamma_{0} + {\Gamma_{1}x} + {\Gamma_{2}x^{2}} + \ldots + {\Gamma_{p}x^{p}}} \right){mod}\quad x^{M}} \end{matrix} & (16) \end{matrix}$

The result is a cyclic convolution between the two polynomials $\begin{matrix} {{T(x)} = {{S_{0}\Gamma_{0}} + {\left( {{S_{1}\Gamma_{0}} + {S_{0}\Gamma_{1}}} \right)x} + {\left( {{S_{2}\Gamma_{0}} + {S_{1}\Gamma_{1}} + {S_{0}\Gamma_{2}}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}{S_{j}\Gamma_{M - 1 - j}x^{M - 1}}}}} & (17) \end{matrix}$

According to the present invention, we start by substituting Equation (2) into (17), which yields $\begin{matrix} {{{{T(x)} = {{\sum\limits_{i = 0}^{N - 1}v_{i}} + {\left( {{\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\Gamma_{i}}}} \right)x} + {\left( {{\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{2i}}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}\Gamma_{1}}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\Gamma_{2}}}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}{\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{ij}\Gamma_{M - 1 - j}x^{M - 1}}}}}}{{or}\quad{better}}}\quad} & (18) \\ {{T(x)} = {\sum\limits_{i = 0}^{N - 1}{{v_{i}\left( {1 + {\left( {\alpha^{i} + \Gamma_{1}} \right)x} + {\left( {\alpha^{2i} + {\alpha^{i}\Gamma_{1}} + \Gamma_{2}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}{\alpha^{ij}\Gamma_{M - 1 - j}x^{M - 1}}}} \right)}.}}} & (19) \end{matrix}$

This equation can now be interpreted in a way that indicates how to update the polynomial coefficients taking previous erasures into account. Assuming that at the time step j−1 the registers T_(i), i=0, . . . M−1 hold the correct modified syndromes and that we receive at time step j a further data symbol, we simply update the modified syndrome polynomial according to Equation (19).

With that information we can write down an algorithm A for an on-the-fly computation of the modified syndromes. Depending on whether the incoming symbol is or is not signalled as an erasure, Algorithm A needs two or one consecutive computations, respectively. But it is also possible to write down an alternative algorithm B for an on-the-fly computation of the modified syndromes. Algorithm B consists of two alternative branches, one of which is selected and performed depending on whether the incoming symbol is or is not signalled as an erasure, and where each of the branches needs just one system clock for performing all the computations necessary for the case in question.

Algorithm A

With Equation (19) it is possible to compute the modified syndrome directly without the computation of the syndromes. The flowchart in FIG. 3 shows the first embodiment of an on-the-fly computation. The flowchart comprises Equation (20) to calculate two auxiliary terms T_(*)(x), Γ_(*)(x) and Equation (21) to calculate an iteration result T_(j)(x), Γ_(j)(x) from the auxiliary terms in case the incoming symbol v_(n) is an erasure. At each symbol clock, when a new symbol is obtained, the modified syndromes are updated according to Equation (20). At every step of the calculation, the resulting modified syndromes are correct up to the latest received symbol.

For this algorithm the system clock rate has to be at least twice the symbol clock rate. The algorithm ends after the computation for the last symbol, then the correct modified syndrome is obtained.

In case of an erasure two system clocks are needed, one for the updating according to Equation (20) and one for multiplying the polynomial with the root as described by Equation (21). In case of an erasure, the order of computing Equation (20) and (21) can be interchanged. If so, it must be taken care, that if the first symbol of the stream is an erasure, the register T₀ must be preloaded with one, otherwise the first part of Equation (21) would yield zero.

The calculation of Equation (20) directly results from the cyclic convolution described in Equation (19). Therefore we describe in the following the algorithm of getting an erasure symbol.

Assume that up to time step n−1 we have in memory the following modified syndrome, which is the linear convolution of Equation (19) $\begin{matrix} \begin{matrix} {{T_{n - 1}(x)} = {\sum\limits_{i = 0}^{n - 1}\quad{v_{i}\left\lbrack {1 + {\left( {a^{i} + \Gamma_{1,{n - 1}}} \right)x} +} \right.}}} \\ {{\left( {a^{2i} + {a^{i}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots +} \\ \left. {\sum\limits_{j = 0}^{M - 1}\quad{a^{ij}\Gamma_{{M - 1 - j},{n - 1}}x^{M - 1}}} \right\rbrack \end{matrix} & (22) \end{matrix}$ and the erasure polynomial Γ_(n−1)(x)=1+Γ_(1,n−1) x+Γ _(2,n−1) x ²+ . . . . +Γ_(p,n−1) x ^(p).  (23)

Next we assume that at time step n an erasure symbol v_(n), is coming, therefore computation of Equation (20) yields $\begin{matrix} \begin{matrix} {{T_{*}(x)} = {{\sum\limits_{i = 0}^{n - 1}\quad{v_{i}\left( {1 + {\left( {a^{i} + \Gamma_{1,{n - 1}}} \right)x} + {\left( {a^{2i} + {a^{i}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}\quad{a^{ij}\Gamma_{{M - 1 - j},{n - 1}}x^{M - 1}}}} \right)}} +}} \\ {v_{n}\left( {1 + {\left( {a^{n} + \Gamma_{1,{n - 1}}} \right)x} + {\left( {a^{2n} + {a^{n}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots + {\sum\limits_{i = 0}^{M - 1}\quad{a^{ni}\Gamma_{{M - 1 - i},{n - 1}}x^{M - 1}}}} \right)} \end{matrix} & (24) \\ {{T_{*}(x)} = {\sum\limits_{i = 0}^{n}\quad{v_{i}\left( {1 + {\left( {a^{i} + \Gamma_{1,{n - 1}}} \right)x} + {\left( {a^{2i} + {a^{i}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}\quad{a^{ij}\Gamma_{{M - 1 - j},{n - 1}}x^{M - 1}}}} \right)}}} & (25) \end{matrix}$

Now Equation (21) is computed ${T_{n}(x)} = {\left( {\sum\limits_{i = 0}^{n}\quad{v_{i}\left( {1 + {\left( {a^{i} + \Gamma_{1,{n - 1}}} \right)x} + {\left( {a^{2i} + {a^{i}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}\quad{a^{ij}\Gamma_{{M - 1 - j},{n - 1}}x^{M - 1}}}} \right)}} \right)\left( {1 - {a^{n}x}} \right)}$

Using cyclic convolution again yields $\begin{matrix} \begin{matrix} {{T_{n}(x)} = {{\underset{i = 0}{\overset{N}{\sum\quad}}\quad{V_{I}\left( {1 + a^{i} + \underset{\underset{\Gamma_{1,n}}{︸}}{a^{n} + \Gamma_{1,{n - 1}}}} \right)}x} +}} \\ {{\left( {a^{2i} + {a^{i}\underset{\underset{\Gamma_{1,n}}{︸}}{\left( {a^{n} + \Gamma_{1,{n - 1}}} \right)}} + \underset{\underset{\Gamma_{2,n}}{︸}}{{a^{n}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}}} \right)x^{2}} + \ldots +} \\ \left. {\underset{j = 0}{\overset{M - 1}{\sum\quad}}\quad{a^{ij}\underset{\underset{\Gamma_{{M - 1 - j},n}}{︸}}{\left( {{a^{n}\Gamma_{{M - {1j}},{n - 1}}} + \Gamma_{{M - 1 - j},{n - 1}}} \right)}x^{M - 1}}} \right) \end{matrix} & (26) \end{matrix}$ which can be rewritten as $\begin{matrix} {{T_{n}(x)} = {\sum\limits_{i = 0}^{n}\quad{{v_{i}\left( {1 + {\left( {a^{i} + \Gamma_{1,n}} \right)x} + {\left( {a^{2i} + {a^{i}\Gamma_{1,n}} + \Gamma_{2,n}} \right)x^{2}} + \ldots + {\sum\limits_{j = 0}^{M - 1}\quad{a^{ij}\Gamma_{{M - 1 - j},n}x^{M - 1}}}} \right)}.}}} & (27) \end{matrix}$

This is in fact again the linear convolution of the syndrome and erasure polynomial, according to Equation (19).

An embodiment of algorithm A for on-the-fly computation of the modified syndrome can be seen in FIG. 4. If the switches are in their depicted position, the architecture realizes the computation according to Equation (20). If the switches are toggled, the architecture realizes the computation according to Equation (21).

The switches are realized as combinatorial logic; hence they do not cause any extra clock delay. By comparison with the embodiments of FIG. 1 and FIG. 2 it can easily be seen that there is only an additional adder per cell or register necessary. That means there is a reduction in hardware, because no additional polynomial multiplier is necessary.

At the beginning of a new code sequence, register 1 in FIG. 4 is initialised with the power of the position of the first symbol, for example with α¹⁸¹ for the example of the inner code of DVD. The registers 2 and 3 are initialised with zeros. At every rising edge of the symbol clock a new symbol arrives and register 1 is clocked, decreasing the root power by one. Afterwards registers 2 are clocked with the next falling edge of the symbol clock, which updates the syndromes according to Equation (20).

If the arrived symbol was signalled as an erasure, the switches are toggled and registers 2 and 3 are clocked again, computing Equation (21). At the end of the last symbol in the sequence, after the last computation, registers 2 hold the modified syndromes of the whole code sequence and registers 3 hold the erasure polynomial.

In the following reference is made to FIG. 5, which shows an example for the timing behaviour of the method of FIG. 3.

Assuming M=10 and order goes downward, as it is the case for the inner code of DVD. The symbol order starts with 181 and goes down to 0. The registers are preloaded with T(x)=0 and Γ⁻¹(x)=1. Let us assume we receive the following data stream: v ₁₈₁=α⁶ , v ₁₈₀*=α⁹ , v ₁₇₉*=α¹⁰ ,v ₁₇₈=α¹² ,v ₁₇₇=α¹⁵ , v ₁₇₆ = . . . , . . . , v ₀=9α^(. . .) , where the v_(i)* shall indicate those symbols which are signalled as erasures. At every rising edge of the symbol clock we get a new symbol v_(n) together with its erasure information as shown in FIG. 5, and the register 1 of the circuit in FIG. 4 is clocked and contains the right power term α^(n) of that symbol. At the first system clock after the rising edge of the symbol clock, denoted as 1 in FIG. 5, registers 2 of the circuit in FIG. 4 are clocked in their depicted position and Equation (20) is computed.

If the erasure signal is true the switches in FIG. 4 are toggled and registers 2 and 3 of the circuit are clocked again at the next rising edge of the system clock, denoted 2 in FIG. 5, which leads to the computation of Equation (21). After the last computation of the 182nd symbol, the correct modified syndrome of the whole codeword is obtained. For the present example, the intermediate results up to after the fifth incoming symbol shall now be explained in detail.

Conventional Way:

At first the intermediate modified syndrome is calculated in a conventional way as a reference to be able to verify the result of the inventive algorithm explained below. Equation (2) gives the syndrome of the data stream as $\begin{matrix} \begin{matrix} {{S(x)}=={\left( {a^{6} + a^{9} + a^{10} + a^{12} + a^{15}} \right) +}} \\ {{\left( {{a^{6}a^{181}} + {a^{9}a^{180}} + {a^{10}a^{179}} + {a^{12}a^{178}} + {a^{15}a^{177}}} \right)x} + \ldots +} \\ {\left( {{a^{6}a^{9 - 181}} + {a^{9}a^{9 - 180}} + {a^{10}a^{9 - 179}} + {a^{12}a^{9 - 178}} + {a^{15}a^{9 - 177}}} \right)x^{9}} \\ {= {a^{169} + {a^{79}x} + {a^{113}x^{2}} + {a^{37}x^{3}} + {a^{194}x^{4}} +}} \\ {{a^{112}x^{5}} + {a^{239}x^{6}} + {a^{168}x^{7}} + {a^{174}x^{8}} + {a^{240}{x^{9}.}}} \end{matrix} & (28) \\ {{{\Gamma(x)} = {{\left( {1 - {a^{180}x}} \right)\left( {1 - {a^{178}x}} \right)} = {1 + {a^{228}x} + {a^{103}{x^{2}.}}}}}\quad} & (29) \end{matrix}$

By multiplying the two polynomials, the modified syndrome polynomial up to that symbol is obtained as $\begin{matrix} \begin{matrix} {{T(x)} = {{{S(x)}{\Gamma(x)}{mod}\quad x^{M}} = {a^{69} + {\left( {a^{79} + {a^{169}a^{228}}} \right)x} +}}} \\ {{{+ \left( {a^{113} + {a^{79}a^{228}} + {a^{169}a^{103}}} \right)}x^{2}} + \ldots} \\ {\ldots + {\left( {a^{240} + {a^{174}a^{228}} + {a^{168}a^{103}}} \right)x^{9}}} \\ {= {a^{169} + {a^{134}x} + {a^{119}x^{2}} + {a^{68}x^{3}} + {a^{128}x^{4}} + {a^{172}x^{5}} +}} \\ {{{+ a^{21}}x^{6}} + {a^{40}x^{7}} + {a^{217}x^{8}} + {a^{152}x^{9}}} \end{matrix} & (30) \end{matrix}$ On-the-Fly Algorithm

Computation is done in order of the incoming symbol; after each step, the resulting modified syndromes are correct up to the latest received symbol.

-   1. Getting data symbol v₁₈₁=α⁶; first system clock 1; computing     Equation (20): $\begin{matrix}     \begin{matrix}     {{T_{0}(x)} = {a^{6}\left( {1 + {a^{181}x} + {a^{2 - 180}x^{2}} + \ldots + {a^{9 - 180}x^{9}}} \right)}} \\     {= {a^{6} + {a^{187}x} + {a^{113}x^{2}} + {a^{39}x^{3}} + {a^{220}x^{4}} +}} \\     {{{+ a^{146}}x^{5}} + {a^{72}x^{6}} + {a^{253}x^{7}} + {a^{179}x^{8}} + {a^{105}x^{9}}}     \end{matrix} & (31) \\     {\Gamma_{0} = 1} & (32)     \end{matrix}$ -   2. Getting erasure symbol v₁₈₀*=α⁹; first system clock 1; computing     Equation (20): $\begin{matrix}     \begin{matrix}     {{T_{*}(x)} = {\left( {a^{6} + a^{9}} \right) + {\left( {a^{187} + {a^{9}a^{180}}} \right)x} +}} \\     {{\left( {a^{113} + {a^{9}a^{2 - 180}}} \right)x^{2}} + {\ldots\ldots} + {\left( {a^{105} + {a^{9}a^{9 - 180}}} \right)x^{9}}} \\     {= {a^{229} + {a^{237}x} + {a^{138}x^{2}} + {0 \cdot x^{3}} + {a^{244}x^{4}} + {a^{194}x^{5}} +}} \\     {{a^{37}x^{6}} + {a^{94}x^{7}} + {a^{57}x^{8}} + {a^{35}x^{9}}}     \end{matrix} & (33)     \end{matrix}$

Second system clock 2, computing Equation (21): $\begin{matrix} {\begin{matrix} {{T_{1}(x)} = {a^{229} + {\left( {a^{237} + {a^{180}a^{229}}} \right)x} +}} \\ {{\left( {a^{138} + {a^{180}a^{237}}} \right)x^{2}} + \ldots + {\left( {a^{35} + {a^{180}a^{57}}} \right)x^{9}}} \\ {= {a^{229} + {a^{211}x} + {a^{137}x^{2}} + {a^{63}x^{3}} + {a^{244}x^{4}} + {a^{170}x^{5}} +}} \\ {{a^{96}x^{6}} + {a^{22}x^{7}} + {a^{203}x^{8}} + {a^{129}x^{9}}} \end{matrix}{and}} & (34) \\ {{\Gamma_{1}(x)} = {1 + {a^{180}x}}} & (35) \end{matrix}$

-   3. Getting data symbol v₁₇₉=α¹⁰; first system clock 1, computing     Equation (20): $\begin{matrix}     \begin{matrix}     {{T_{2}(x)} = {\left( {a^{229} + a^{10}} \right) + {\left( {a^{211} + {a^{10}\left( {a^{179} + a^{180}} \right)}} \right)x} +}} \\     {{\left( {a^{137} + {a^{10}\left( {a^{2 - 179} + {a^{179}a^{180}}} \right)}} \right)x^{2}} + \ldots +} \\     {\left( {a^{129} + {a^{10}\left( {a^{9 - 179} + {a^{8 - 179}a^{180}}} \right)}} \right)x^{9}} \\     {= {a^{199} + {a^{179}x} + {a^{162}x^{2}} + {a^{87}x^{3}} + {a^{209}x^{4}} + {a^{48}x^{5}} +}} \\     {{a^{201}x^{6}} + {a^{133}x^{7}} + {a^{182}x^{8}} + {a^{215}x^{9}}}     \end{matrix} & (36) \\     {{\Gamma_{2}(x)} = {1 + {a^{180}x}}} & (37)     \end{matrix}$ -   4. Getting erasure symbol v₁₇₈*=α¹²; first system clock 1, computing     Equation (20): $\begin{matrix}     \begin{matrix}     {{T_{*}(x)} = {\left( {a^{199} + a^{12}} \right) + {\left( {a^{179} + {a^{12}\left( {a^{178} + a^{180}} \right)}} \right)x} +}} \\     {{\left( {a^{162} + {a^{12}\left( {a^{2 - 178} + {a^{178}a^{180}}} \right)}} \right)x^{2}} + \ldots +} \\     {\left( {a^{215} + {a^{12}\left( {a^{9 - 178} + {a^{8 - 178}a^{180}}} \right)}} \right)x^{9}} \\     {= {a^{216} + {a^{110}x} + {a^{187}x^{2}} + {a^{111}x^{3}} + {a^{17}x^{4}} + {a^{146}x^{5}} +}} \\     {{a^{64}x^{6}} + {a^{37}x^{7}} + {a^{108}x^{8}} + {a^{39}x^{9}}}     \end{matrix} & (38)     \end{matrix}$

Second system clock 2, computing Equation (21): $\begin{matrix} {\begin{matrix} {{T_{3}(x)} = {a^{216} + {\left( {a^{110} + {a^{178}a^{216}}} \right)x} +}} \\ {{\left( {a^{187} + {a^{178}a^{110}}} \right)x^{2}} + \ldots + {\left( {a^{39} + {a^{178}a^{108}}} \right)x^{9}}} \\ {= {a^{216} + {a^{36}x} + {a^{234}x^{2}} + {a^{135}x^{3}} + {a^{85}x^{4}} +}} \\ {{a^{88}x^{5}} + {a^{202}x^{6}} + {a^{244}x^{7}} + {a^{166}x^{8}} + {a^{231}x^{9}}} \end{matrix}{and}} & (39) \\ \begin{matrix} {{\Gamma_{3}(x)} = {1 + {\left( {a^{180} + a^{178}} \right)x} + {a^{180}a^{178}x^{2}}}} \\ {= {1 + {a^{228}x} + {a^{103}x^{2}}}} \end{matrix} & (40) \end{matrix}$

-   5. Getting data symbol v₁₇₇=α¹⁵; first system clock 1; computing     Equation (20): $\begin{matrix}     \begin{matrix}     {{T_{4}(x)} = {\left( {a^{216} + a^{15}} \right) + {\left( {a^{36} + {a^{15}\left( {a^{177} + a^{228}} \right)}} \right)x} +}} \\     {{\left( {a^{234} + {a^{15}\left( {a^{2 - 177} + {a^{177}a^{228}} + a^{103}} \right)}} \right)x^{2}} + \ldots +} \\     {\left( {a^{231} + {a^{15}\left( {a^{9 - 177} + {a^{8 - 177}a^{228}} + {a^{7 - 177}a^{103}}} \right)}} \right)x^{9}} \\     {= {a^{169} + {a^{134}x} + {a^{119}x^{2}} + {a^{68}x^{3}} + {a^{128}x^{4}} + {a^{172}x^{5}} +}} \\     {{a^{21}x^{6}} + {a^{40}x^{7}} + {a^{217}x^{8}} + {a^{152}x^{9}}}     \end{matrix} & (41) \\     \begin{matrix}     {{\Gamma_{4}(x)} = {1 + {\left( {a^{180} + a^{178}} \right)x} + {a^{180}a^{178}x^{2}}}} \\     {= {1 + {a^{228}x} + {a^{103}x^{2}}}}     \end{matrix} & (42)     \end{matrix}$

Comparison of Equation (42) with (29) and (41) with (30) verifies the algorithm. This result is an intermediate result, it is not the final modified syndrome but merely the modified syndrome up to the fifth received symbol. The modified syndrome of the whole code sequence is obtained after the 182nd computation.

Algorithm B

In the following, the alternative algorithm B for the computation of the modified syndrome polynomials will be explained in more detail:

The second system clock at the computation of an erasure symbol can be avoided by inserting Equation (20) in Equation (21), which yields $\begin{matrix} \begin{matrix} {{T_{n}(x)} = {{{T_{n - 1}(x)}\left( {1 - {a^{n}x}} \right)} +}} \\ {v_{n}\left( {1 + {\left( {a^{n} + \Gamma_{1,{n - 1}}} \right)x} + {\left( {a^{2n} + {a^{n}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}} \right)x^{2}} + \ldots +} \right.} \\ {{\left. {\sum\limits_{j = 0}^{M - 1}\quad{a^{nj}\Gamma_{{M - 1 - j},{n - 1}}x^{M - 1}}} \right)\left( {1 - {a^{n}x}} \right)},} \end{matrix} & (43) \end{matrix}$ ${or}\quad{better}\begin{matrix} \begin{matrix} {{T_{n}(x)} = {{{T_{n - 1}(x)}\left( {1 - {a^{n}x}} \right)} +}} \\ {v_{n}\left( {1 + {\underset{\underset{\Gamma_{1,{n - 1}}}{︸}}{\left( {a^{n} + \underset{\underset{\Gamma_{1,n}}{︸}}{a^{n} + \Gamma_{1,{n - 1}}}} \right)}x} + {\underset{\underset{\Gamma_{2,{n - 1}}}{︸}}{\left( {a^{2n} + {a^{n}\underset{\underset{\Gamma_{1,n}}{︸}}{\left( {a^{n} + \Gamma_{1,{n - 1}}} \right)}} + \underset{\underset{\Gamma_{2,n}}{︸}}{{a^{n}\Gamma_{1,{n - 1}}} + \Gamma_{2,{n - 1}}}} \right)}x^{2}} + \ldots +} \right.} \\ {\underset{\underset{\Gamma_{{M - 1},{n - 1}}}{︸}}{\sum\limits_{j = 0}^{M - 1}\quad{a^{nj}\underset{\underset{\Gamma_{{M - 1 - j},n}}{︸}}{\left( {{a^{n}\Gamma_{{M - j},{n - 1}}} + \Gamma_{{M - 1 - j},{n - 1}}} \right)}}}{x^{M - 1}.}} \end{matrix} & (44) \end{matrix}$

Therefore the equation can be written as T _(n)(x)=T _(n−1)(x)(1−α^(n) x)+v _(n)Γ_(n−1)(x), where Γ⁻¹(x)=1  (45)

Now it is possible to write down the second algorithm B, which needs only one system clock for every incoming symbol type.

The flowchart in FIG. 6 shows the second embodiment of an on-the-fly computation. For calculating one iteration result T_(j)(x), Γ_(j)(x), the flowchart comprises Equation (46) used in case the incoming symbol v_(n) is an erasure, and Equation (47) used otherwise.

At each symbol clock, when a new symbol is obtained, the modified syndromes are updated. At every step of the calculation, the resulting modified syndromes are correct up to the latest received symbol. For that algorithm B the system clock rate can be the same as the symbol clock rate, which yields to a very fast computation. The algorithm ends after the last symbol, then the correct modified syndrome is obtained.

A second embodiment of an on-the-fly computation of the modified syndrome is depicted in FIG. 7. If the switches are in their depicted position, the architecture realizes the computation according to Equation (47). If the switches are toggled, the architecture realizes the computation according to Equation (46).

The switches are realized as combinatorial logic; hence they do not cause any extra clock delay. Comparing the depicted architecture with the one in FIG. 4, an additional multiplier and adder per cell or register is necessary. Increasing the hardware structure and therefore increasing the latency time can achieve reduction of computation time.

At the beginning of a new code sequence, register 1 in FIG. 7 is initialised with the power of the position of the first symbol, for example with α¹⁸¹ for the example of the inner code of DVD. The registers 2 and 3 are initialised with zeros. The switches are directly connected to the erasure signal. All registers 1, 2 and 3 are clocked with the rising edge of the symbol clock, which updates the syndromes according to Equation (46) or (47), depending on the erasure signal.

The clocking of register 1 decreases the power of the root term by one, in preparation for the next symbol. At the end of the last symbol in the sequence, after the last computation, registers 2 hold the modified syndromes of the whole code sequence and registers 3 hold the erasure polynomial.

The timing behaviour and the algorithm are now explained by way of example. Assuming M=10 and order goes downward, as it is the case for the inner code of DVD. The symbol order starts with 181 and goes down to 0. The registers are preloaded with T(x)=0 and Γ⁻¹(x)=1. Let us assume we receive the following data stream:

-   v₁₈₁=α⁶, v₁₈₀*=α⁹, v₁₇₉=α¹⁰, v₁₇₈*=α¹², v₁₇₇=α¹⁵, v₁₇₆= . . . , . .     . , v₀=α ^(. . .) ,     where the v_(i)* shall indicate those symbols-which are signalled as     erasures. At every rising edge of the system clock a new symbol     v_(n) and an erasure information as shown in FIG. 8 is obtained.

The erasure signal feeds the switches of the circuit in FIG. 7. If the erasure signal is false the switches remain in their depicted position, if the erasure signal is true the switches are toggled. At the rising edge of the system clock, denoted as 1 in FIG. 6, the circuit in FIG. 7 is clocked and Equation (46) or (47) is computed. After the last, i.e. 182nd symbol clock, the correct modified syndrome of the whole codeword is obtained. For the present example, the intermediate results up to after the fifth incoming symbol shall now be explained in detail.

Computation is done in order of the incoming symbols; after each step, the resulting modified syndromes are correct up to the latest received symbol.

-   -   1. Getting data symbol v₁₈₁=α⁶; computing Equation (46):         $\begin{matrix}         \begin{matrix}         {{T_{0}(x)} = {a^{6}\left( {1 + {a^{181}x} + {a^{2 - 180}x^{2}} + \ldots + {a^{9 - 180}x^{9}}} \right)}} \\         {= {a^{6} + {a^{187}x} + {a^{113}x^{2}} + {a^{39}x^{3}} + {a^{220}x^{4}} +}} \\         {{a^{146}x^{5}} + {a^{72}x^{6}} + {a^{253}x^{7}} + {a^{179}x^{8}} + {a^{105}x^{9}}}         \end{matrix} & (48) \\         {\Gamma_{0} = 1} & (49)         \end{matrix}$     -   2. Getting erasure symbol v₁₈₀*=α⁹ computing Equation (47):         $\begin{matrix}         {\begin{matrix}         {{T_{1}(x)} = {a^{6}\left( {1 + {a^{181}x} + {a^{2 - 180}x^{2}} + \ldots + {a^{9 - 180}x^{9}}} \right)}} \\         {= {a^{6} + {\left( {a^{187} + {a^{180}a^{6}}} \right)x} + {\left( {a^{113} + {a^{180}a^{187}}} \right)x^{2}} + \ldots +}} \\         {{\left( {a^{105} + {a^{180}a^{179}}} \right)x^{9}} + a^{9}} \\         {= {a^{229} + {a^{211}x} + {a^{137}x^{2}} + {a^{63}x^{3}} + {a^{244}x^{4}} + {a^{170}x^{5}} +}} \\         {{a^{96}x^{6}} + {a^{22}x^{7}} + {a^{203}x^{8}} + {a^{129}x^{9}}}         \end{matrix}{and}} & (50) \\         {{\Gamma_{1}(x)} = {1 + {a^{180}x}}} & (51)         \end{matrix}$     -   3. Getting data symbol v₁₇₉=α¹⁰; computing Equation (46):         $\begin{matrix}         \begin{matrix}         {{T_{2}(x)} = {\left( {a^{229} + a^{10}} \right) + {\left( {a^{211} + {a^{10}\left( {a^{179} + a^{180}} \right)}} \right)x} +}} \\         {{\left( {a^{137} + {a^{10}\left( {a^{2 - 179} + {a^{179}a^{180}}} \right)}} \right)x^{2}} + \ldots +} \\         {\left( {a^{129} + {a^{10}\left( {a^{9 - 179} + {a^{8 - 179}a^{180}}} \right)}} \right)x^{9}} \\         {= {a^{199} + {a^{179}x} + {a^{162}x^{2}} + {a^{87}x^{3}} + {a^{209}x^{4}} +}} \\         {{a^{48}x^{5}} + {a^{201}x^{6}} + {a^{133}x^{7}} + {a^{182}x^{8}} + {a^{215}x^{9}}}         \end{matrix} & (52) \\         {{\Gamma_{2}(x)} = {1 + {a^{180}x}}} & (53)         \end{matrix}$     -   4. Getting erasure symbol v₁₇₈*=α¹²; computing Equation (47):         $\begin{matrix}         {\begin{matrix}         {{T_{3}(x)} = {a^{199} + {\left( {a^{179} + {a^{178}a^{199}}} \right)x} +}} \\         {{\left( {a^{162} + {a^{178}a^{179}}} \right)x^{2}} + \ldots +} \\         {{\left( {a^{215} + {a^{178}a^{182}}} \right)x^{9}} + a^{12} + {a^{12}a^{180}x}} \\         {= {a^{216} + {a^{36}x} + {a^{234}x^{2}} + {a^{135}x^{3}} + {a^{85}x^{4}}}} \\         {{{+ a^{88}}x^{5}} + {a^{202}x^{6}} + {a^{244}x^{7}} + {a^{166}x^{8}} + {a^{231}x^{9}}}         \end{matrix}{and}} & (54) \\         \begin{matrix}         {{\Gamma_{3}(x)} = {1 + {\left( {a^{180} + a^{178}} \right)x} + {a^{180}a^{178}x^{2}}}} \\         {= {1 + {a^{228}x} + {a^{103}x^{2}}}}         \end{matrix} & (55)         \end{matrix}$     -   5. Getting data symbol v₁₇₇=α¹⁵; computing Equation (46):         $\begin{matrix}         \begin{matrix}         {{T_{4}(x)} = {\left( {a^{216} + a^{15}} \right) + {\left( {a^{36} + {a^{15}\left( {a^{177} + a^{228}} \right)}} \right)x} +}} \\         {{\left( {a^{234} + {a^{15}\left( {a^{2 - 177} + {a^{177}a^{228}} + a^{103}} \right)}} \right)x^{2}} +} \\         {\left( {a^{231} + {a^{15}\left( {a^{9 - 177} + {a^{8 - 177}a^{228}} + {a^{7 - 177}a^{103}}} \right)}} \right)x^{9}} \\         {= {a^{169} + {a^{134}x} + {a^{119}x^{2}} + {a^{68}x^{3}} + {a^{128}x^{4}} + {a^{172}x^{5}} +}} \\         {{a^{21}x^{6}} + {a^{40}x^{7}} + {a^{217}x^{8}} + {a^{152}x^{9}}}         \end{matrix} & (56) \\         \begin{matrix}         {{\Gamma_{4}(x)} = {1 + {\left( {a^{180} + a^{178}} \right)x} + {a^{180}a^{178}x^{2}}}} \\         {= {1 + {a^{228}x} + {a^{103}x^{2}}}}         \end{matrix} & (57)         \end{matrix}$

Comparison of Equation (56) with (29) and (57) with (30) verifies the algorithm. This result is an intermediate result, it is not the finally modified syndrome, it is the modified syndrome up to that symbol. The modified syndrome of the whole code sequence is obtained after the 182nd computation. 

1. A method for soft-decision decoding of Reed-Solomon codewords consisting of N symbols, M of which are check symbols, comprising computing a syndrome polynomial, an erasure polynomial and a modified syndrome polynomial in parallel by iteratively updating coefficients of said polynomials at each symbol clock a new data symbol is arriving, such that the polynomials for a code-word are obtained directly after the coefficient updating for the last symbol of the codeword has been performed.
 2. The method of claim 1 comprising the steps of: computing the syndrome polynomial S(x) as ${{S(x)} = {{\sum\limits_{i = 0}^{N - 1}v_{i}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}x}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{2i}x^{2}}} + \ldots + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{{({M - 1})}i}x^{M - 1}}}}},$ where the v_(i) are the incoming data symbols; computing the erasure polynomial Γ(x) as ${{\Gamma(x)} = {\prod\limits_{i = 0}^{p - 1}\left( {1 - {\alpha^{j_{i}}x}} \right)}},$ where α^(j) ^(i) is the power of the positions j₀, j₁, . . . , j_(p−1) of the erasures and p is the number of erasures in the code-word; constructing the modified syndrome polynomial by T(x)=γ(x)S(x)modx^(M), determining polynomes Λ(x), Ω(x) by solving the implicit key equation Λ(x)T(x)=Ω(x)modx ^(M) with Berlekamp-Massey or Euclid's algorithm, computing the Forney polynomial Ψ(x)=Λ(x)Γ(x) computing the magnitude of the errors and erasures using the Forney equation.
 3. The method of claim 2, whereby the computation of the erasure polynomial and the modified syndrome polynomial is performed on-the-fly with the incoming data symbols v_(N−1), . . . , v₁, v₀.
 4. The method of claim 1, whereby the syndrome polynomial is computed in the form $\begin{matrix} {{S(x)} = {{\sum\limits_{i = 0}^{N - 1}v_{i}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{i}x}} + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{2i}x^{2}}} + \ldots + {\sum\limits_{i = 0}^{N - 1}{v_{i}\alpha^{{({M - 1})}i}x^{M - 1}}}}} \\ {= {S_{0} + {S_{1}x} + {S_{2}x^{2}} + \ldots + {S_{M - 1}{x^{M - 1}.}}}} \end{matrix}$ by iteratively updating the coefficients S_(i), i=0, 1, . . . , M−1, whereby at each symbol clock j when a new symbol v_(n), is arriving, the power α^(n) of the position n is computed and the coefficients are updated in the following way S _(i,j) =S _(i,j−1) +v _(n)α^(in), i=0, 1, . . . , M−1 where S_(i,−1)=0.
 5. The method of claim 1, whereby the erasure polynomial is computed on-the-fly by iteratively updating the polynomial $\begin{matrix} {{\Gamma(x)} = {\prod\limits_{i = 0}^{p - 1}\left( {1 - {\alpha^{ji}x}} \right)}} \\ {= {\Gamma_{0} + {\Gamma_{1}x} + {\Gamma_{2}x^{2}} + \ldots + {\Gamma_{p}x^{p}}}} \end{matrix}$ whereby the updating is performed at each symbol clock j_(i) when a new arriving symbol is being flagged as an erasure, the power α^(j) ^(i) of the erasure position j_(i) is computed and the polynomial is updated in the following way Γ_(j)(x)=Γ_(j−1)(x)·(1−α^(j) ^(i) x)=(Γ_(0,j−1)+Γ_(1,j−1) x+ . . . +Γ _(p,j−1) x ^(p))(1−α^(j) ^(i) x).
 6. The method of claim 1, the on-the-fly computation of the modified syndrome polynomial being performed by the steps of: preloading of polynomials Γ⁻¹(x)=1; T ⁻¹(x)=0; getting one symbol v_(n), at each symbol clock; computing at a first system clock within the symbol clock: $\begin{matrix} {{T_{*}(x)} = {{T_{j - 1}(x)} + {v_{n}\left( {1 + {\left( {\alpha^{n} + \Gamma_{1,{j - 1}}} \right)x} + \left( {\alpha^{2n} + {\alpha^{n}\Gamma_{1,{j - 1}}} +} \right.} \right.}}} \\ \left. {{\left. \Gamma_{2,{j - 1}} \right)x^{2}} + \ldots + {\sum\limits_{i = 0}^{M - 1}{\alpha^{ni}\Gamma_{{M - 1 - i},{j - 1}}x^{M - 1}}}} \right) \\ {{{\Gamma_{*}(x)} = {\Gamma_{j - 1}(x)}};} \end{matrix}$ determining if v_(n) is an erasure; If Yes: Computing at a second system clock within the symbol clock: T _(j)(x)=T _(*)(x)(1−α^(n) x) Γ_(j)(x)=Γ_(j−1)(x)(1−α^(n) x) if no: using T _(j)(x)=T_(*)(x) Γ_(j)(x)=Γ_(*)(x).
 7. The method of claim 1, the computation of the modified syndrome polynomial involving, in cases where an incoming symbol is flagged as an erasure, an on-the-fly updating step in the form: T _(n)(x)=T _(n−1)(x)(1−α^(n) x)+v _(n)Γ_(n−1)(x), where Γ⁻¹(x)=1.
 8. The method of claim 1, the modified syndrome polynomial being computed on-the-fly by the steps of: preloading of polynomials Γ⁻¹(x)=1; T⁻¹(x)=0, getting one symbol v_(n) at each symbol clock, determining if v_(n), is an erasure, if Yes: Computing T _(j)(x)=T _(j−1)(x)(1−α^(n) x)+v _(n)Γ_(j−1)(x) Γ_(j)(x)=Γ_(j−1)(x)(1−α^(n) x); if No: computing $\begin{matrix} {{T_{j}(x)} = {{T_{j - 1}(x)} + {v_{n}\left( {1 + {\left( {\alpha^{n} + \Gamma_{1,{j - 1}}} \right)x} + \left( {\alpha^{2n} + {\alpha^{n}\Gamma_{1,{j - 1}}} +} \right.} \right.}}} \\ \left. {{\left. \Gamma_{2,{j - 1}} \right)x^{2}} + \ldots + {\sum\limits_{i = 0}^{M - 1}{\alpha^{ni}\Gamma_{{M - 1 - i},{j - 1}}x^{M - 1}}}} \right) \\ {{\Gamma_{j}(x)} = {{\Gamma_{j - 1}(x)}.}} \end{matrix}$
 9. A computer program product, such as a digital storage medium, comprising program means for soft-decision decoding of Reed-Solomon codewords, the program means being adapted for computing of a syndrome polynomial, an erasure polynomial and a modified syndrome polynomial in parallel by iteratively updating coefficients of said polynomials at each symbol clock when a new data symbol is arriving, such that the polynomials for a code-word are obtained directly after the coefficient updating for the last symbol of the codeword has been performed.
 10. A Reed-Solomon codeword decoder comprising means for computation of a syndrome polynomial, an erasure polynomial and a modified syndrome polynomial in parallel by iteratively updating coefficients of said polynomials at each symbol clock when a new data symbol is arriving, such that the polynomials for a codeword are obtained directly after the coefficient updating for the last symbol of the codeword has been performed. 